Skip to content

docs(pm-skill): the sixth readings increment — seven measured platform facts, ceiling 388 → 395 (ruled) - #16615

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-16566-readings-increment-six
Sep 7, 2026
Merged

docs(pm-skill): the sixth readings increment — seven measured platform facts, ceiling 388 → 395 (ruled)#16615
os-zhuang merged 2 commits into
mainfrom
claude/issue-16566-readings-increment-six

Conversation

@os-musk

@os-musk os-musk commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Fixes #16566
Refs #14265
Refs #14014
Refs #13561
Refs #13326

Session (durable attribution in prose, because a PR body's trailing block does not survive an edit): https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX

Seven deduplicated readings land as one rule line each in references/platform-readings.md, one further reading REPLACES a row its own measurement falsified (line-neutral), and the ceiling row in scripts/pm/check-skill-line-ratchet.mjs moves 388 to 395 — the landed count — under the STANDING one-file exception in pm-dispatch SKILL.md, recorded as a ruledRaises record rather than a decision card, which is what that exception directs. was is untouched, no other ceiling row moves, and nothing is paid by re-wrapping.

Dedup ledger

Every candidate was checked against the ledger BEFORE it was written, by reading the neighbouring rows rather than by title.

# candidate verdict why
1a a listing returning a bare array and no total cannot announce its own truncation, so its zero is not a reading landed the neighbouring row covers only the full-first-page case for one endpoint; the response-shape property is the half that does not rot
1b an existence question uses the single-point 200/404 read, or git ls-remote --heads, never a listing page landed the remedy half was absent everywhere in the file
2 issue_write clears every field it is not passed, assignees included landed the labels half is on the ledger; this is the other half, and it does not fit inside that line under the 120-byte rule
3 an MCP body edit sent with no footer of its own comes back with no platform-appended footer landed, line-neutral measured again on this PR (below); it falsifies the row that proposed the opposite mechanism, so it replaces that row rather than adding one
4 · #14265 a standalone marker line is dropped by the COMMENT read path with the bytes still in storage landed the recorded read-drop covers inline code spans only; the non-inference (absence is not evidence of a write-side strip) was not stated for that surface
4 · #14014 MCP's read limiter and write limiter are independent of each other landed the ledger has MCP-vs-GitHub bucket independence; read-vs-write independence inside MCP was absent, and both polarities are measured on the card
4 · #13561 assignability is a repo+account property that moves mid-session, with a 204/404 probe and a read-back landed nothing in the file mentions assignability as a probe-able property
4 · #13326 a control word's hit does not license a different term's zero — the defect is term-shaped landed the control-word rule is on the ledger as a NECESSARY condition; the measurement that it is not SUFFICIENT was not
4 · #13573 MCP issue_read truncates a long body silently; REST returns it whole already-present the two-read discriminant, the deterministic trigger and the empty-code-span detector are all on the ledger
4 · #13583 read PR labels via pull_request_read get, never issue_read get_labels already-present the three-leg row states it, and states more: leg 2 is itself unreliable, which supersedes the card's proposed rule
4 · #13141 the get_labels miss makes the mandated read-modify-write strip concurrent labels already-present both halves are on the ledger (the three legs, and the whole-set replacement with its stripping consequence)
4 · #13384 an issue body ending in a rule plus footer loses everything from the rule onward on create already-present four channel/action forms plus the create-append asymmetry are recorded; the single-PR relocation refinement is governed by the standing refusal to compress an observation into a law
4 · #13417 a contract-review PASS leaves no trace on the PR refused not a platform reading, and its landing file is references/contract-review.md — outside this flight's file surface; its own Restart-when: names the contract-review row, not the readings row
4 · #11742 the PR-lookup rate-limit signature, its window and the rate-not-budget knob hold-not-met its LAST transition comment (2026-09-04, director) moved the exit to "the discriminating /rate_limit reading exists" and states the hold stays until then; that reading is not on #15275, which is still open

Counts — candidates 13 · landed 7 · already-present 4 · refused 1 · hold-not-met 1. Eight lines written, seven of them new: 388 to 395. No line is deleted to pay for them, nothing is re-wrapped, and the one replaced row is replaced by its own refutation at equal line count.

⚠️ Stated for the ACCEPT rather than buried: the hold cards' Restart-when: lines name corpus audit #13597, and #13597 is still OPEN (read this run). Landing them rests on the dispatch's ruling that Phase 2's ruling on the readings row was executed by the rules-only rewrite, not on the literal text of those cards. #11742 is the one card whose NEWEST transition names a different, unmet gate, so it is held back.

The measurement candidate 3 required

Run on this PR's own body, through the same channel the fleet writes with, before the line was written.

step what was sent what read back
create (MCP create_pull_request) body ending in the session-URL footer block byte-identical, ONE footer, no appended block
edit (MCP update_pull_request, draft: true) the same body with no footer of its own no footer at all — nothing synthesised, nothing appended

⇒ Second independent reading, agreeing with the one taken on PR #16591. The ledger row that proposed the opposite mechanism ("the tool synthesises a footer only for a body carrying none") was explicitly marked 未实测; it is now measured, and false, so it is replaced by the reading.

⚠️ This disagrees with AGENTS.md, whose edit-side sentence says the session-URL footer survives and the platform appends a bare block under whatever you send. AGENTS.md is outside this flight's declared file surface, so the conflict is reported here rather than silently resolved — it is the seat's call whether AGENTS.md's edit-side sentence now needs the same correction.

The line #11742 would carry, if the seat rules its hold met

- MCP 变更 PR 的限流窗实测 ≥18 分钟,退避按 ~20 分钟;拒时主池读 idle ⇒ 按速率不按预算。

Gates

All 38 families derived by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack from the real change set were run on the final head ca1fba4d2, and reconciled with --ran:

✓ dispatch-gates --ran: 38 derived famil(ies) accounted for — 38 run, 0 NOT-MEASURED.
✓ check-skill-line-ratchet self-test: 157 cases pass.
✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/platform-readings.md is 395 lines (ceiling 395; headroom 0).
✓ check-skill-line-ratchet: cross-file move into .claude/skills/pm-dispatch/references/platform-readings.md: +11 (314→395, less 70 lines of ordinary ruled raise) against a net source decrease of 20; authorised by #14685 item 5 (comment 5520452691).

pnpm --filter @objectstack/lint run check:doc-formula-expressions first exited 3 (PREREQUISITE NOT MET — @objectstack/formula unbuilt), which is NOT MEASURED rather than red; its dependency closure was built under the shared verify lock and it then exited 0. Repo-wide pnpm lint (eslint . --no-inline-config) exits 0 on the same head, run under the lock rather than narrowed. node scripts/pm/check-governed-merges.mjs --test on the two paths exits 3 (GOVERNED, one path on the register). A driver-less bare clone (merge.os-regen.driver absent, its config read exits 1) merge-trees this head against origin/main cleanly, and no open PR touches either file.

维护者速读(草稿)

改了什么 —— 平台读数事实表新增七行规则(一事一行),另有一行被它自己的实测推翻、原地替换(行数不增);棘轮上限 388 → 395(落地行数),并按常设例外在 ruledRaises 里记一条引用裁决原文的记录。没有删任何既有内容付账,没有折行重排,was 与其它文件上限一律未动。

为什么改 —— 七条都是席位这周真实踩过的坑:把截断的第一页读成"不存在"(差点让一个已完成的实现被重做)、单字段更新把 assignees 清空、控制词命中就以为空结果可信、指派静默失败、评论里的标记读不到就误判成写侧被删。事实表是这些教训唯一的家;写不进去,下一个席位照样踩。第八行更值钱:它把一条"未实测的猜想"换成了实测结论,那条猜想本身就会误导人。

风险与代价(含回滚) —— 代价是 skills 语料每席会话多读七行。风险低:全是描述性事实行,不改任何流程判据、不改门禁行为。回滚 = revert 本 PR 两个提交,账本行与棘轮行同笔回到 388,无残留状态。真正的判断点是那八行是否真的不重复 —— 上面的去重表逐条给了理由,请按理由核,不按标题核。另一处要拍板的是 AGENTS.md 的编辑侧那句话现在与实测冲突,改不改在本 PR 面外。

席位意见 —— (留空,待复核席位填写)

你要做的 —— 逐条核实去重表(尤其四张 already-present 与一张 hold-not-met 的判定)、确认抬上限走的是常设例外而不是需要新决策卡、决定 AGENTS.md 那句是否另开一卡,然后人工合并。⛔ 本 PR 不翻 ready、不入队、不挂 auto-merge。


Generated by Claude Code

…m facts, ceiling 388 -> 395 (ruled)

Seven deduplicated readings land as one rule line each in the readings ledger,
and the ceiling row moves to the landed count under the STANDING one-file
exception (pm-dispatch SKILL.md), recorded as a `ruledRaises` record rather than
a decision card, exactly as that exception directs.

The lines, each written in the file's voice and placed in the section that owns
its subject:

- MCP's read limiter and write limiter are independent of each other, measured in
  both polarities, so one side's refusal does not predict the other's.
- A control word's hit does not license a different term's zero: the same
  document is reachable by one term and empty by another in the same batch, so
  the defect is term-shaped, not document-shaped.
- A listing that returns a bare array and no total cannot announce its own
  truncation, so its zero is not a reading — the neighbouring row already covers
  the full-first-page case, this one states the response-shape property.
- An existence question goes to a single-point 200/404 read
  (`GET /repos/{o}/{r}/branches/BRANCH`) or `git ls-remote --heads`, never to a
  listing page.
- `issue_write` clears every field it is not passed, assignees included — the
  labels half was already on the ledger, this is the other half.
- Assignability is a repo+account property that moves mid-session, with its
  204/404 probe and the read-back rule.
- A standalone marker line is dropped by the COMMENT read path with the bytes
  still in storage, so its absence is not evidence of a write-side strip.

Ceiling 388 -> 395 at the landed count, headroom 0, same convention; `was` is
untouched and no other ceiling moves.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Sep 7, 2026
@os-musk os-musk added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 7, 2026 — with Claude
…place the untested row with the reading

The row proposed a mechanism for the attribution-footer variation and marked it
未实测 with an explicit refusal to compress the observation into a law: the tool
synthesises a footer only for a body that carries none.

Measured twice now, on two different PRs, in the direction that mechanism
predicts: a body edit sent through the MCP `update_pull_request` wrapper with no
footer of its own reads back, through the same channel, with NO footer at all —
no synthesised block, nothing appended. The mechanism is false, so the row that
proposed it is replaced BY the reading, at the same line count. The neighbouring
rows are untouched, including the one that refuses to generalise any single form
across channels and actions, which still governs this line.

⚠️ This disagrees with `AGENTS.md`'s edit-side reading (session-URL footer
survives, the platform appends a bare block). AGENTS.md is outside this flight's
file surface; the conflict is reported rather than silently resolved.

Ceiling unchanged at 395: this correction is line-neutral and buys nothing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX

os-musk commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator Author

维护者速读(终稿 · skills 席,2026-09-07T14:2xZ)


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review September 7, 2026 14:23
@os-zhuang
os-zhuang enabled auto-merge September 7, 2026 14:23
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 7, 2026
Merged via the queue into main with commit 4d72868 Sep 7, 2026
39 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-16566-readings-increment-six branch September 7, 2026 14:50
This was referenced Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants